﻿//
// Created by LiuYou on 2021/8/12.
//



#include "Main.h"
#include "Book.h"

extern char say[];
char say[] = {"美食谱"};


/**
 * 好了, 现在还有一个问题是 extern。详情见3。
 *
 * 比如: 我在 Main.c中定义了一个全局对象/变量。我想让其它源文件也使用到。那就在 Main.h文件使用 extern声明这个全局对象/变量。
 * 然后其它源文件使用这个全局对象的话, 要含入这个包含extern全局对象的头文件还是使用extern?
 *
 * 经过测试, 发现如果要在文件间使用全局对象的话, 一定要在定义这个对象之前先 extern声明这个对象。然后在其它文件使用的时候也是先
 * extern声明这个对象。然后就可以使用它了。
 *
 * 然后是关于包含 extern全局对象的头文件含入的问题。其实没有必要含入头文件, 含入头文件的真正原因是头文件中有这个全局对象的extern声明。
 * 现在终于懂了。
 *
 * 最后是 extern声明的位置, 只要是定义这个全局对象/变量之前就行。可以创建一个与这个源文件关联的头文件, 然后将 extern声明发到头文件中。
 * 也可以不创建头文件, 但是要在定义这个全局对象之前进行extern声明。
 * 而且 extern声明一定要在任何作用域之外。即和头文件的含入是一样的！！！！
 * 当然, 全局对象的定义也可以放在函数中进行赋值的。
 *
 * 好了, 接下来是没有extern的全局对象的问题。
 *
 */
int main(int arc, char** argv) {
    char str[] = {"666"};
    printf( "%d\n", atoi( str ));

    struct Book book = getBook( 1, "c/c++", "留攸", 100.01 );
    seeBook( &book );


    return 0;
}